#pragma once
#include<iostream>
#include<vector>
using namespace std;

namespace My
{
	template<class T,class Container=vector<T> >
	class stack
	{
	public:
		stack()
		{

		}
		
		void push(const T& v)
		{
			_V.push_back(v);
		}

		void pop()
		{
			_V.pop_back();
		}

		const T& top()
		{
			return _V.back();
		}

		bool empty()
		{
			return _V.empty();
		}

		int size()
		{
			return _V.size();
		}


	private:
		Container _V;
	};

	void test01()
	{
		stack<int> s;
		s.push(1);
		s.push(2);
		s.push(3);
		s.push(4);


		while (!s.empty())
		{
			cout << s.top() << endl;
			s.pop();
		}
	}

}